웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > linux

[리눅스] FFmpeg를 사용하여 비디오 포맷 변환하기

Last Modified : 2023-11-26 / Created : 2023-11-25
652
View Count
윈도우에서 최근 우분투 리눅스 계열을 사용하다가 비디오 포맷을 변경해야 할 일이 생겼습니다. 얼마 전 올린 글을 보시면 DOS 게임을 플레이 하면서 이를 영상으로 녹화했는데 포맷이 avi라 용량이 매우 크더군요 ~ 이를 mp4로 변환하면 용량이 훨씬 작기 때문에 어떻게 변환할까 방법을 찾다가 FFmpeg를 사용하여 변환하였습니다. 그럼 아래에서 FFmpeg에 대하여 자세히 알아봅니다.




FFmpeg는?


FFmpeg는 리눅스에서 사용되는 유틸리티로 다양한 오디오 및 비디오 포맷을 변환하고 처리하는 데 사용되는 매우 강력한 도구입니다. 주요 기능들은 다음과 같습니다.

- 비디오 파일 형식 변환 (MP4, AVI, MOV, WebM, WMV, FLV, MKV, MPEG-2 등등)
- 비디오에서 오디오만 추출하기
- 비디오 일부 영역만 자르기
- 비디오 해상도 변경하기
- GIF 변환하기

위와 같이 비디오 파일 형식을 변환하는 것 이 외에도 여러가지 기능들을 지원하며 GIF로도 변환이 가능합니다. 그럼 아래에서는 FFmpeg의 기본적인 사용법과 몇 가지 사용 예시를 만들어 알아보도록 하겠습니다.


FFmpeg 기본 사용법 알아보기


가장 먼저 FFmpeg의 기본적인 사용방법을 알아봅니다. 이 전에 우선 리눅스에서 설치하는 방법을 먼저 알아볼께요.


FFmpeg 설치하기


설치 방법은 매우 간단합니다. 우분투, 데비안 계열에서는 apt 또는 apt-get 패키지 관리자를 사용해 설치가 가능합니다. 다른 방법으로는 yum을 사용할 수 있습니다. 아래는 설치 명령어입니다.
$ sudo apt-get install ffmpeg

또는

$ sudo yum install ffmpeg

이제 설치가 모두 끝났다면 다음으로 비디오 형식을 변환하는 방법을 알아봅니다.


[참고] 비디오 형식 변환 후 유튜브 영상 올리려고 했으나 실패하다...
얼마 전 고전 PC 게임을 플레이하고 유튜브 영상을 저장했습니다. 이제 테스트 겸 유튜브에 올리렸고 했는데 에러가 발생하더군요. 원인을 알아보니 영상 크기가 매우 크다는 점이 원인이었습니다. 당시 비디오 파일은 AVI 포맷이었으며 용량이 약 3G 정도 되었습니다. 만약 MP4로 변환하면 용량이 훨씬 줄어들게 되어 이런 오류가 해결될 수 있습니다. 비디오 형식이 필요한 경우 중 하나라고 할 수 있겠네요!


!! 비디오 형식 변환하기


FFmpeg로 가장 많이 사용되는 경우가 바로 비디오 형식 변환일 것입니다. avi를 mp4로 변환하거나 이 외의 여러가지 비디오 형식으로 변환하는 것이 가능합니다. MP4, AVI, MOV, WebM, WMV, FLV, MKV, MPEG-2 외에도 대부분의 비디오 변환을 지원합니다.

아래는 비디오 형식을 변환하는 몇 가지 예제입니다. 최근에는 mp4 변환이 많이 사용되며 웹에서는 webm 역시 많이 쓰입니다. 또한 여기에 사용된 옵션들은 선택 가능한 옵션들입니다. 간략히 설명하면 다음과 같죠.

  • -i // 입력될 파일로 여기서는 input.avi를 사용
  • -c:v libx264 // 비디오 코덱 설정. MP4 파일에 널리 사용되는 libx264로 설정하였음
  • -c:a aac // 오디오 코덱 설정. 오디오 코덱으로 AAC로 설정
  • -b:a 128k // 오디오 비트레이트를 128 kbps로 설정함을 의미함
  • output.mp4 // -i와 반대로 출력 파일의 이름을 지정함


@ avi 파일을 mp4 비디오로 변환하기
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4

@ mov 파일을 mp4로 변환하기
ffmpeg -i input.mov -c:v libx264 -c:a aac output.mp4

@ wmv를 mp4로 변환하기
ffmpeg -i input.mov -c:v libx264 -c:a aac output.mp4

@ mp4를 avi로 변환하기
ffmpeg -i input.mp4 -c:v libxvid -c:a libmp3lame output.avi

다음은 mp4를 webm으로 변환하는 방법입니다. webm은 웹비디오 포맷 중 하나로 압축 효율이 매우 좋습니다. 다만 지원하는 브라우저 환경을 고려할 필요가 있습니다. 변환 명령어는 아래와 같습니다.
ffmpeg -i input.mp4 -c:v libvpx -c:a libvorbis output.webm

참고로 비트레이트를 조절하여 변환할 수도 있습니다. 비트레이트초당 비트 수를 의미하며 품질과 파일 크기를 적절히 조절하기 위해서 사용됩니다. 너무 낮은 값을 사용하면 품질이 떨어지므로 주의할 필요가 있습니다.


!! 비디오에서 오디오만 추출하는 방법


특정 비디오에서 오디오만 추출하기 원한다면 아래의 명령어 사용이 가능합니다. 아래 예제는 새로운 mp3 오디오 파일을 생성합니다.
$ ffmpeg -i video.mp4 -q:a 0 -map a audio.mp3

이제 audio.mp3 오디오 파일이 생성되었습니다. 이처럼 간단하게 비디오를 오디오로 변환, 추출할 수 있습니다.


!! 비디오 리사이징하기


비디오 해상도(Resolution)를 변경하는데 사용하는 것도 가능합니다. 만약 비디오 해상도를1280x720으로 변환하려면? 아래와 같이 명령어를 사용할 수 있습니다.
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4

위 명령어로 비디오의 해상도가 1280 x 720으로 변경하게 됩니다.


!! 비디오 길이 자르기


비디오가 너무 긴 경우 또는 일부 영역만 잘라내기 위해서 사용하는 것도 가능합니다. 만약 10초에서 30초 사이의 영역만 자를 경우 아래와 같이 입력합니다.
ffmpeg -ss 00:00:10 -t 00:00:30 -i input.mp4 -acodec copy -vcodec copy output.mp4

이제 새로운 비디오를 얻을 수 있습니다.


!! 비디오를 이미지 포맷 GIF로 변환하기


만약 GIF 이미지 파일로 변환하길 원한다면 FFmpeg를 사용하여도 가능합니다.
ffmpeg -i video.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" -c:v libx264 -pix_fmt yuv420p output.gif

위의 명령어로 비디오를 GIF로 변환할 수 있습니다.


FFmpeg의 장단점은?


여기까지 몇 가지 방법들과 예제를 알아보았는데요 ~ 간략하게 FFmpeg의 장점과 단점을 알아보면 다음과 같습니다. 먼저 장점입니다.

@ ffmpeg 장점은?
가장 큰 장점은 거의 모든 비디오와 오디오 포맷을 지원한다는 점입니다. 그리고 다양한 기능들이 있다는 점인데 비디오, 오디오 변환 이외에도 잘라내거나 GIF 변환, 압축이나 해상도 변경 등등 여러 기능이 많습니다.

@ 반대로 ffmpeg 단점은?
비교적 사용이 어려울 수 있습니다. 그래픽 사용자 인터페이스(GUI)에 익숙한 사용자라면 특히 사용하기 어려울 수 있습니다. 대부분 다양한 옵션과 파라미터를 사용해야 하는데 이는 초보자에게 혼란을 줄 수 있죠.

참고로 리눅스에서 FFmpeg 대신에 아래와 같은 도구 사용이 가능하겠습니다.

리눅스에서의 FFMpeg 이외의 비디오 변환 도구는?
HandBrake: 사용자 친화적인 GUI를 제공하며 비디오 변환에 특화된 도구
Transcoder: 리눅스용 간단하고 직관적인 비디오 변환 도구
VLC Media Player: 비디오 재생 뿐만 아니라 간단한 변환 기능 제공


여기까지 FFmpeg의 기본적인 사용법과 예시, 장단점 및 리눅스에서 사용할 수 있는 다른 비디오 변환 도구들에 대해 알아보았습니다. 개인적으로 avi와 mp4로 단순 변환하는 데 많이 사용하였는데 이 외에도 많은 기능을 지원하기 때문에 초보자부터 전문가까지 많은 사랑을 얻는 것 같습니다.

Previous

[Ubuntu] 우분투 DOS 사용 방법 알아보기, DOSBOX Emulator

Previous

[리눅스] 이미지 편집 프로그램 추천 앱, GIMP